//
// Created by jinling on 2025/6/25.
//
#pragma  once
#include <string>
#include<iostream>
#include<unistd.h>// // 包含close()等系统调用
#include <sys/stat.h>//// 包含DEFFILEMODE定义
#include<sys/types.h>
#include <fcntl.h> //// 包含O_CREAT、O_APPEND等标志
#include<memory>


namespace tmms
{
    namespace base
    {

        enum RotateType  //滚动策略 一个小时滚动一次还是一天滚动一次
        {
            kRotateNone,
            kRotateHour,
            kRotateDay
        };

        class FileLog
        {
        public:
            FileLog() =default;
            ~FileLog() = default;

            bool Open(const std::string &filePath); //打开文件filePath，描述符就用fd_存储
            size_t WriteLog(const std::string &msg); //往fd_中写文件 msg
            void Rotate(const std::string &file);
            void SetRotate (RotateType type);
            RotateType GetRotateType() const;
            int64_t FileSize()const;
            std::string FilePath () const;
        private:
            int fd_ {-1};//打开文件成功与否的标志
            std::string file_path_;
            RotateType rotate_type_{kRotateNone} ;
        };
        using FileLogPter = std::shared_ptr<FileLog>;
    }
}
